import axios from "axios";
import store from "../store";
import router from "../router";
// import router from '@/router'
// import store from '@/store'

// 给axios设置一些默认行为
// eslint-disable-next-line no-undef
switch (process.env.NODE_ENV) {
  case "production":
    axios.defaults.baseURL = "http://47.96.0.211:3001/admin";
    break;
  case "development":
    axios.defaults.baseURL = "http://47.96.0.211:3001/admin";
    break;
}
// 设置超时时间
axios.defaults.timeout = 50000;
// 设置跨域是否需要携带凭证
axios.defaults.withCredentials = false;

// 设置请求拦截器，
axios.interceptors.request.use(
  (config) => {
    // 进行token校验（JWT）：接收服务器返回的token，存储到本地，每次发送请求，都需要带上token
    const token = localStorage.getItem("token");
    token && (config.headers.token = token);
    // config需要返回
    return config;
  },
  (error) => {
    // 请求错误的操作，返回报错信息
    return Promise.reject(error);
  }
);

// 设置响应拦截器
/**
 * response 包含内容：
 * response: {
 *  data: 响应主体内容，一般都是后端返回的数据
 *  status： 服务器相应的状态码
 *  statusText: 响应状态码的描述，
 *  headers：服务器响应头
 *  config: 之前发送请求是发送给服务器的配置对象
 *  request: 原生的ajax对象
 * }
 *
 */
axios.interceptors.response.use((response) => {
  console.log("axios-response--->", response);
  if (response.data?.data?.token) {
    localStorage.setItem("token", response.data.data.token);
  }
  //tonken过期处理
  if (response.data?.code === "10119") {
    localStorage.removeItem("token");
    store.commit("updateUserInfo", {});
    router.push("/login");
  }
  // eslint-disable-next-line no-undef
  ElMessage({
    // 不需要引入，自动就可以使用了
    message: response?.data?.message,
    type: response.data.code === "200" ? "success" : "error",
  });
  return response.data;
});
export default axios;
